// Source: https://usaco.guide/general/io
#include <bits/stdc++.h>
using namespace std;
int main() {
int usb, ps2, both; cin >> usb >> ps2 >> both;
int m; cin >> m;
long long um[300000]; memset(um, 0, sizeof(um));
long long pm[300000]; memset(pm, 0, sizeof(pm));
int umNum = 0, pmNum = 0;
for (int i = 0; i < m; i++) {
long long p; string kind;
cin >> p >> kind;
if (kind == "USB") {
um[umNum++] = p;
} else {
pm[pmNum++] = p;
}
}
sort(um, um+umNum);
sort(pm, pm+pmNum);
int umInd = 0, pmInd = 0;
int count = 0;
long long cost = 0;
while (umInd < min(umNum, usb)) {
cost += um[umInd++];
count++;
}
while (pmInd < min(pmNum, ps2)) {
cost += pm[pmInd++];
count++;
}
while ((pmInd < pmNum || umInd < umNum) && both > 0) {
if (pmInd < pmNum && umInd < umNum) {
if (um[umInd] < pm[pmInd]) {
cost += um[umInd++];
} else {
cost += pm[pmInd++];
}
count++;
both--;
continue;
}
if (pmInd < pmNum) {
cost += pm[pmInd++];
} else {
cost += um[umInd++];
}
count++;
both--;
}
cout << count << " " << cost << endl;
}
682. Baseball Game | 496. Next Greater Element I |
232. Implement Queue using Stacks | 844. Backspace String Compare |
20. Valid Parentheses | 746. Min Cost Climbing Stairs |
392. Is Subsequence | 70. Climbing Stairs |
53. Maximum Subarray | 1527A. And Then There Were K |
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers | 318. Maximum Product of Word Lengths |
448. Find All Numbers Disappeared in an Array | 1155. Number of Dice Rolls With Target Sum |
415. Add Strings | 22. Generate Parentheses |
13. Roman to Integer | 2. Add Two Numbers |
515. Find Largest Value in Each Tree Row | 345. Reverse Vowels of a String |
628. Maximum Product of Three Numbers | 1526A - Mean Inequality |
1526B - I Hate 1111 | 1881. Maximum Value after Insertion |
237. Delete Node in a Linked List | 27. Remove Element |
39. Combination Sum | 378. Kth Smallest Element in a Sorted Matrix |
162. Find Peak Element | 1529A - Eshag Loves Big Arrays |